home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 February
/
EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso
/
earcd
/
midi
/
midifl12.lha
/
midifile.new
/
midifile.h
< prev
next >
Wrap
C/C++ Source or Header
|
1995-08-27
|
4KB
|
129 lines
#include <stdio.h>
extern int (*Mf_getc)(void);
extern int (*Mf_header)(int,int,int);
extern int (*Mf_trackstart)(void);
extern int (*Mf_trackend)(void);
extern int (*Mf_noteon)(int,int,int);
extern int (*Mf_noteoff)(int,int,int);
extern int (*Mf_pressure)(int,int,int);
extern int (*Mf_parameter)(int,int,int);
extern int (*Mf_pitchbend)(int,int,int);
extern int (*Mf_program)(int,int);
extern int (*Mf_chanpressure)(int,int);
extern int (*Mf_sysex)(int,char*);
extern int (*Mf_metamisc)(int,int,char *);
extern int (*Mf_seqspecific)(int,int,char *);
extern int (*Mf_seqnum)(int);
extern int (*Mf_text)(int,int,char *);
extern int (*Mf_eot)(void);
extern int (*Mf_timesig)(int,int,int,int);
extern int (*Mf_smpte)(int,int,int,int,int);
extern int (*Mf_tempo)(long);
extern int (*Mf_keysig)(int,int);
extern int (*Mf_arbitrary)(int,int);
extern int (*Mf_error)(char *);
extern unsigned long Mf_currtime;
extern unsigned long Mf_realtime;
extern unsigned long Mf_currtempo;
extern int Mf_division;
extern int Mf_nomerge;
/* definitions for MIDI file writing code */
extern int (*Mf_putc)(char);
extern int (*Mf_writetrack)(int);
extern int (*Mf_writetempotrack)(void);
extern void midifile(void);
extern unsigned long mf_sec2ticks(double,int,unsigned long);
extern void mfwrite(int,int,int,FILE *);
extern int mf_write_meta_event(unsigned long,unsigned char,unsigned char *,unsigned long);
extern int mf_write_midi_event(unsigned long delta_time, int type,
int chan, char *data, unsigned long size);
extern double mf_ticks2sec(unsigned long ticks,int division,unsigned long tempo);
extern void mf_write_tempo();
extern void mf_write_seqnum();
extern void mfread();
extern void mferror(char *s);
#ifndef NO_LC_DEFINES
/* MIDI status commands most significant bit is 1 */
#define note_off 0x80
#define note_on 0x90
#define poly_aftertouch 0xa0
#define control_change 0xb0
#define program_chng 0xc0
#define channel_aftertouch 0xd0
#define pitch_wheel 0xe0
#define system_exclusive 0xf0
#define delay_packet (1111)
/* 7 bit controllers */
#define damper_pedal 0x40
#define portamento 0x41
#define sostenuto 0x42
#define soft_pedal 0x43
#define general_4 0x44
#define hold_2 0x45
#define general_5 0x50
#define general_6 0x51
#define general_7 0x52
#define general_8 0x53
#define tremolo_depth 0x5c
#define ctrl_chorus_depth 0x5d
#define detune 0x5e
#define phaser_depth 0x5f
/* parameter values */
#define data_inc 0x60
#define data_dec 0x61
/* parameter selection */
#define non_reg_lsb 0x62
#define non_reg_msb 0x63
#define reg_lsb 0x64
#define reg_msb 0x65
/* Standard MIDI Files meta event definitions */
#define meta_event 0xFF
#define sequence_number 0x00
#define text_event 0x01
#define copyright_notice 0x02
#define sequence_name 0x03
#define instrument_name 0x04
#define lyric 0x05
#define marker 0x06
#define cue_point 0x07
#define channel_prefix 0x20
#define end_of_track 0x2f
#define set_tempo 0x51
#define smpte_offset 0x54
#define time_signature 0x58
#define key_signature 0x59
#define sequencer_specific 0x74
/* Manufacturer's ID number */
#define Seq_Circuits (0x01) /* Sequential Circuits Inc. */
#define Big_Briar (0x02) /* Big Briar Inc. */
#define Octave (0x03) /* Octave/Plateau */
#define Moog (0x04) /* Moog Music */
#define Passport (0x05) /* Passport Designs */
#define Lexicon (0x06) /* Lexicon */
#define Tempi (0x20) /* Bon Tempi */
#define Siel (0x21) /* S.I.E.L. */
#define Kawai (0x41)
#define Roland (0x42)
#define Korg (0x42)
#define Yamaha (0x43)
#endif
/* miscellaneous definitions */
#define MThd 0x4d546864
#define MTrk 0x4d54726b
#ifndef NO_LC_DEFINES
#define lowerbyte(x) ((unsigned char)(x & 0xff))
#define upperbyte(x) ((unsigned char)((x & 0xff00)>>8))
#endif